import Koa from 'koa';
import bodyParser from 'koa-bodyparser';
import cors from 'koa-cors';
import helmet from 'koa-helmet';
import logger from 'koa-logger';
import { config } from './config';
import router from './routes';
import { errorHandler } from './middlewares/errorHandler';
import { setupDatabase } from './database';

// 创建Koa应用实例
const app = new Koa();

// 配置中间件
app.use(helmet()); // 安全相关
app.use(cors()); // 跨域支持
app.use(bodyParser()); // 请求体解析
app.use(logger()); // 日志记录
app.use(errorHandler()); // 错误处理

// 注册路由
app.use(router.routes()).use(router.allowedMethods());

// 连接数据库
setupDatabase();

// 启动服务器
const PORT = config.server.port || 3000;
app.listen(PORT, () => {
  console.log(`服务器已启动，监听端口: ${PORT}`);
  console.log(`环境: ${config.env}`);
});

// 处理未捕获的异常
process.on('uncaughtException', (err) => {
  console.error('未捕获的异常:', err);
  // 记录日志但不退出进程
});

// 处理未处理的Promise拒绝
process.on('unhandledRejection', (reason, promise) => {
  console.error('未处理的Promise拒绝:', reason);
  // 记录日志但不退出进程
});

export default app; 